Recursos:

Preliminares: librerías

library("tidyverse")
library("ds4psy")
library("data.table")

Cita: Ramos-Álvarez, M.M. (2017).Introducciòn a R. Recuperado 15 septiembre 2024, desde http://www4.ujaen.es/~mramos/ADMmRa/IntroduceR.pdf


Ejemplo extraído de: Ramos-Álvarez, M.M. (2020). Bases Conceptuales del Análisis de Datos.
Imagine que realiza una investigación sobre la influencia de las técnicas de entrenamiento cognitivo basado en el programa Brain TrainingTM. En concreto usted y otros tres compañeros reciben entrenamiento de este tipo y después de tres sesiones obtienen las puntuaciones 9, 8, 7 y 8 respectivamente en una prueba de memoria.
Supongamos que aplicamos a otro grupo de 4 compañeros tres sesiones con un video-juego también de la misma compañía de Brain TrainingTM pero que no refuerza la memoria, y observamos que éstos obtienen 5, 5, 7 y 7 puntos respectivamente.
Finalmente, se replica en otro grupo de profesores el estudio con el video-juego alternativo y se encuentran las puntuaciones 8, 1, 8 y 7.
La ejemplificación del proceso de Análisis de Datos a partir de esta sencilla investigación experimental sería la siguiente:


Fichero de datos para comprobaciones: BrainTrain.csv

Fichero con el código del tutorial en R Studio: CienciaDatosMmRaCode.Rmd

1 Introducción

El objetivo de este módulo será aprender a establecer un esquema de trabajo óptimo (que no significa el mejor o el único) para estar en disposición de hacer Ciencia de Datos. De esta manera sentaríamos las bases para profundizar en los aspectos fundamentales a partir de los cuatro módulos posteriores. Para ello necesitamos una buena herramienta computacional de cálculo versátil y asequible. Esto lo conseguiremos de la mano del programa R (https://www.r-project.org) y el entorno R Studio (https://rstudio.com). Una vez que tengamos instalados los dos programas y nos hayamos familiarizado con los mismos, crearemos nuestro propio marco de trabajo en R Studio mediante un fichero del tipo R Markdown. En este marco podremos aprender a establecer nuestro propio esquema de trabajo para empezar a hacer Ciencia de Datos, de la mano del supuesto de prácticas inspirado en la investigación con Brain Training.

1.1 Preparar la herramienta: entorno de trabajo a partir del programa R









1.2 Preparar nuestro esquema de trabajo: empezar a realizar Ciencia de Datos con R

Todos los fragmentos de código que se incluyen en el tutorial están preparados de tal manera que pueda copiarlos en el portapapeles para pegarlos en su entorno de trabajo R-Mardown y editarlos con sus propias notas. Recuerde que puede incluir notas comenzando la línea con el símbolo de hashtag(‘#’), toda vez que se definen fragmentos de código Insertando ‘chunks’.

A continuación se incluye un resumen sobre el entorno R-Studio, el cual puede imprimir expresamente a partir del documento: R Studio IDE Guía Rápida


También se incluye un resumen para aprender a manejar los aspectos fundamentales del programa R en general, el cual puede también imprimir expresamente a partir del documento: Base R Cheat Sheet 1



1) Las librerías (packages) son fundamentales.
R es algo así como un programa de análisis con potencial, pero a la que vamos añadiendo funcionalidad al indicarle las librerías específicas que nos servirán para llevar a cabo aquellos análisis específicos que nos interesan, o bien librerías que permiten manejar la información.
La fuente de referencia básica para encontrar las librerías será la página oficial del programa R (https://cloud.r-project.org/web/packages/). En cada sesión tenemos que recordar que hay que cargar las librerías de interés.
Además, si es la primera vez, hay que instalarlas en nuestro entorno de trabajo.
Empezamos a escribir en el código …

# Únicamente la primera vez insalaremos las librerías
#  (quitamos momentáneamente el hashtag y después lo volvemos a incluir)
# install.packages("Rcmdr")
# Y entonces la cargamos en memoria
  library(Rcmdr)

La librería R-Commander es una buena opción para iniciarse en R, puesto que a través de un sistema de menús permite generar los comandos de R para las opciones más representativas de análisis. En este momento sería interesante que explorase la misma, intentando ubicar aquello que es más importante en el análisis de los datos: Opciones de análisis como descripción de los datos, ANOVA, representaciones gráficas, etc.
Una vez que la haya explorado, no olvide cerrar Rcmdr

Para familiarizarse con las Librerías y el Funcionamiento de R:


2) Preparamos la información a partir de los datos que nos interesan. Para ello codificamos los datos de Brain Tarining. Progresaremos desde el vector como unidad básica hacia los marcos (data.frame)

  # Ejemplo 1 .- Brain Training
  # Desde el vector como unidad básica hacia los marcos
  Memoria <- c(9,8,7,8,5,5,7,7,8,1,8,7)
  Grupos <- c("BrainT", "BrainT", "BrainT", "BrainT", "VideoJ", "VideoJ", "VideoJ", 
              "VideoJ", "RepVideoJ", "RepVideoJ", "RepVideoJ", "RepVideoJ")
  Grupos<-as.factor(Grupos)

Hemos almacenado los datos de memoria en la variable denominada Memoria y la variable independiente en Grupos. En cualquier momento podemos explorar lo que contienen las variables a partir del panel derecho de R-Studio o sencillamente, de manera más interactiva, tecleando y ejecutando el nombre de dicha variable. Por ejemplo:

# Para explorar el contenido de la variable de medida (o variable dependiente)
Memoria
##  [1] 9 8 7 8 5 5 7 7 8 1 8 7
# Para explorar el contenido de la variable independiente
Grupos
##  [1] BrainT    BrainT    BrainT    BrainT    VideoJ    VideoJ    VideoJ   
##  [8] VideoJ    RepVideoJ RepVideoJ RepVideoJ RepVideoJ
## Levels: BrainT RepVideoJ VideoJ

R incluye funciones muy potentes para la creación de estructuras de información: rep, seq, paste, gl, expand.grid

  # Secuencias regulares
  rep(3,4)
## [1] 3 3 3 3
  NivGrupos <- c("BrainT", "VideoJ", "RepVideoJ")
  rep(NivGrupos,4)
##  [1] "BrainT"    "VideoJ"    "RepVideoJ" "BrainT"    "VideoJ"    "RepVideoJ"
##  [7] "BrainT"    "VideoJ"    "RepVideoJ" "BrainT"    "VideoJ"    "RepVideoJ"
  rep(x=NivGrupos,each=4)
##  [1] "BrainT"    "BrainT"    "BrainT"    "BrainT"    "VideoJ"    "VideoJ"   
##  [7] "VideoJ"    "VideoJ"    "RepVideoJ" "RepVideoJ" "RepVideoJ" "RepVideoJ"
  seq(2,10) #ó  c(2:10)
## [1]  2  3  4  5  6  7  8  9 10
  seq(-2,-10,by=-1)
## [1]  -2  -3  -4  -5  -6  -7  -8  -9 -10
  paste0(c("X"), 1:10, sep="")
##  [1] "X1"  "X2"  "X3"  "X4"  "X5"  "X6"  "X7"  "X8"  "X9"  "X10"
  gl(3, 4, label=NivGrupos)
##  [1] BrainT    BrainT    BrainT    BrainT    VideoJ    VideoJ    VideoJ   
##  [8] VideoJ    RepVideoJ RepVideoJ RepVideoJ RepVideoJ
## Levels: BrainT VideoJ RepVideoJ
  # Secuencias aleatorias, por ej. a partir de una distribución
  #  Normal de media 0 y desviación típica la unidad
  rnorm(50,0,1)
##  [1] -0.91875481 -0.91094890 -0.86508669 -1.49070516 -0.81089466 -0.66443215
##  [7] -0.30310748 -0.02459309 -1.04746694 -0.02930798  0.93499939  0.06644635
## [13]  0.63763889 -0.96810657 -0.99442532  0.41386486 -0.80968435  0.38842344
## [19] -1.28928310  0.46200179 -1.34304474  0.48687971 -0.07761775  0.96979735
## [25]  0.46234366  0.06767926  1.14500533 -0.09323287  0.60670630  0.77307430
## [31]  0.57208524  0.76432619  0.97769311  0.29247831  0.24798694 -0.99389473
## [37]  0.59816599 -0.74967864  0.21324368  1.17258564  1.05928237  1.09774276
## [43]  0.16668347 -0.27852517  0.62414864  0.40687564  0.85421448  1.25301072
## [49]  1.81207602 -1.35046191

Explore con detenimiento todas las opciones. Habrá podido constatar que prácticamente todas las operaciones en el programa se realizan a través de funciones, las cuales se aplican sobre argumentos. Por ejemplo rep incluye argumentos como x, times, each, algunos de los cuales tienen valores por defecto: rep(x, times = 1, length.out = NA, each = 1).

  # analice los parámetros de algunas funciones
  help(rep)
  help(seq)

Ahora volvemos sobre variables del tipo categórico, con niveles, como es usual en las variables independientes; es decir con lo que R define como factores:

  NivGrupos <- c("BrainT", "VideoJ", "RepVideoJ")
  Grupos <- gl(3, 4, label=NivGrupos)
  Grupos
##  [1] BrainT    BrainT    BrainT    BrainT    VideoJ    VideoJ    VideoJ   
##  [8] VideoJ    RepVideoJ RepVideoJ RepVideoJ RepVideoJ
## Levels: BrainT VideoJ RepVideoJ

Podemos constatar que esta forma de crear la variable Grupos es preferible a la opción previa, aunque el resultado es prácticamente el mismo.
Y ahora podemos juntar todas las partes (vectores) en una única estructura de datos: los marcos (data.frame), la estructura por excelencia en R.
Para entender esta estructura tan importante, la compararemos además con otras estructuras relevantes, ligeramente diferentes en función del objetivo que tiene dicha estructura de datos: las listas, estructuras temporales o tablas.

  # La estructura definitiva de datos: Marcos (data.frame)
  BrainTrain <- data.frame(Grupos, Memoria)
  BrainTrain
##       Grupos Memoria
## 1     BrainT       9
## 2     BrainT       8
## 3     BrainT       7
## 4     BrainT       8
## 5     VideoJ       5
## 6     VideoJ       5
## 7     VideoJ       7
## 8     VideoJ       7
## 9  RepVideoJ       8
## 10 RepVideoJ       1
## 11 RepVideoJ       8
## 12 RepVideoJ       7
  # Diferencia con las listas genéricas
  list(Grupos, Memoria)
## [[1]]
##  [1] BrainT    BrainT    BrainT    BrainT    VideoJ    VideoJ    VideoJ   
##  [8] VideoJ    RepVideoJ RepVideoJ RepVideoJ RepVideoJ
## Levels: BrainT VideoJ RepVideoJ
## 
## [[2]]
##  [1] 9 8 7 8 5 5 7 7 8 1 8 7
  # Estructuras con codificación temporal
  # Asigna momentos temporales a las medidas de Memoria, 
  # por ejemplo una medida al mes que empezaron el 2º mes del año 2008.
  ts(Memoria, frequency = 12, start = c(2008, 2))
##      Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
## 2008       9   8   7   8   5   5   7   7   8   1   8
## 2009   7
  # Tablas de frecuencias (contingencia)
  table(Memoria,exclude = NULL)
## Memoria
## 1 5 7 8 9 
## 1 2 4 4 1

Para familiarizarse con las Estructuras y Tipos de Datos, así como la creación de estructuras:


3) Ahora estamos en disposición de modificar la estructura original de datos. Para ello incluiremos algunas funciones adicionales algo más complejas para creación de estructuras e incorporaremos una nueva variable a los datos de Brain Training.

  # Mas sobre estructuras de creación de información

  
  expand.grid(a=c(1:2),sexo=c("Varon", "Mujer"),Grupos=NivGrupos)
##    a  sexo    Grupos
## 1  1 Varon    BrainT
## 2  2 Varon    BrainT
## 3  1 Mujer    BrainT
## 4  2 Mujer    BrainT
## 5  1 Varon    VideoJ
## 6  2 Varon    VideoJ
## 7  1 Mujer    VideoJ
## 8  2 Mujer    VideoJ
## 9  1 Varon RepVideoJ
## 10 2 Varon RepVideoJ
## 11 1 Mujer RepVideoJ
## 12 2 Mujer RepVideoJ
  NivGrupos <- c("BrainT", "VideoJ", "RepVideoJ")
  Grupos <- gl(3, 4, label=NivGrupos)
  Grupos
##  [1] BrainT    BrainT    BrainT    BrainT    VideoJ    VideoJ    VideoJ   
##  [8] VideoJ    RepVideoJ RepVideoJ RepVideoJ RepVideoJ
## Levels: BrainT VideoJ RepVideoJ
  NivSex <- c("Varon", "Mujer")
  Sex <- gl(2, 6, label=NivSex)
  Sex
##  [1] Varon Varon Varon Varon Varon Varon Mujer Mujer Mujer Mujer Mujer Mujer
## Levels: Varon Mujer
  interaction(Grupos, Sex)
##  [1] BrainT.Varon    BrainT.Varon    BrainT.Varon    BrainT.Varon   
##  [5] VideoJ.Varon    VideoJ.Varon    VideoJ.Mujer    VideoJ.Mujer   
##  [9] RepVideoJ.Mujer RepVideoJ.Mujer RepVideoJ.Mujer RepVideoJ.Mujer
## 6 Levels: BrainT.Varon VideoJ.Varon RepVideoJ.Varon ... RepVideoJ.Mujer
  # Añadimos la variable Sexo a nuestro marco de datos
  NivSex <- c("Varon", "Mujer")
  BrainTrain$Sexo<-gl(2, 2, 12,label=NivSex)
  BrainTrain
##       Grupos Memoria  Sexo
## 1     BrainT       9 Varon
## 2     BrainT       8 Varon
## 3     BrainT       7 Mujer
## 4     BrainT       8 Mujer
## 5     VideoJ       5 Varon
## 6     VideoJ       5 Varon
## 7     VideoJ       7 Mujer
## 8     VideoJ       7 Mujer
## 9  RepVideoJ       8 Varon
## 10 RepVideoJ       1 Varon
## 11 RepVideoJ       8 Mujer
## 12 RepVideoJ       7 Mujer

Y podemos resumir la información, esto será fundamental para ayudarnos en la comprensión de los datos.

  # Con una única variable de agrupación
  medias<-tapply(Memoria, Grupos, mean)
  medias
##    BrainT    VideoJ RepVideoJ 
##         8         6         6
  # Caso general con más de una variable de agrupación
  tapply(Memoria, list(Grupos,BrainTrain$Sexo), mean)
##           Varon Mujer
## BrainT      8.5   7.5
## VideoJ      5.0   7.0
## RepVideoJ   4.5   7.5
  with(BrainTrain, by(Memoria, list(Grupos,Sexo), mean))
## : BrainT
## : Varon
## [1] 8.5
## ------------------------------------------------------------ 
## : VideoJ
## : Varon
## [1] 5
## ------------------------------------------------------------ 
## : RepVideoJ
## : Varon
## [1] 4.5
## ------------------------------------------------------------ 
## : BrainT
## : Mujer
## [1] 7.5
## ------------------------------------------------------------ 
## : VideoJ
## : Mujer
## [1] 7
## ------------------------------------------------------------ 
## : RepVideoJ
## : Mujer
## [1] 7.5
  with(BrainTrain, aggregate(Memoria, by=list(Grupos,Sexo), mean))
##     Group.1 Group.2   x
## 1    BrainT   Varon 8.5
## 2    VideoJ   Varon 5.0
## 3 RepVideoJ   Varon 4.5
## 4    BrainT   Mujer 7.5
## 5    VideoJ   Mujer 7.0
## 6 RepVideoJ   Mujer 7.5

Es importante aprender acrear sus propias funciones, de cara a sistematizar las operaciones que prevé sobre los datos. En un sencillo ejemplo, vamos a definir una función para estimar el Error Típico de la Media (Varianza de los datos dividida por la raíz cuadrada del tamaño muestral), una medida de variabilidad o dispersión bastante recomendable.

ETM <- function(x) sqrt(var(x,na.rm=TRUE)/length(na.omit(x)))
# La aplicamos sobre nuestros datos
ETM(Memoria)
## [1] 0.6195469
# Y mejoramos un poco la legibilidad del resultado
ETM <- function(x) round(sqrt(var(x,na.rm=TRUE)/length(na.omit(x))),4)
ETM(Memoria)
## [1] 0.6195

Para familiarizarse con las Funciones:


Para familiarizarse con el Resumen de la Información a partir de Funciones Estadísticas:


4) Los Modelos estadísticos nos ayudarán a ir un paso más allá gracias a la explicación de los datos.
Volviendo a la investigación de Brain Training, los datos medidos para la Memoria se explicarían en este caso a partir de la variable Grupo de entrenamiento. Este es el modelo estadístico más elemental, un modelo lineal.

  # Modelos Estadísticos
  modelo <- as.formula(Memoria ~ Grupos)
  ModLin<-lm(modelo,data = BrainTrain)
  # Para obtener un resumen del modelo
  summary(ModLin)
## 
## Call:
## lm(formula = modelo, data = BrainTrain)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
##   -5.0   -1.0    0.5    1.0    2.0 
## 
## Coefficients:
##                 Estimate Std. Error t value Pr(>|t|)    
## (Intercept)        8.000      1.054   7.589 3.36e-05 ***
## GruposVideoJ      -2.000      1.491  -1.342    0.213    
## GruposRepVideoJ   -2.000      1.491  -1.342    0.213    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2.108 on 9 degrees of freedom
## Multiple R-squared:  0.2105, Adjusted R-squared:  0.03509 
## F-statistic:   1.2 on 2 and 9 DF,  p-value: 0.3452

Las estructuras de agrupación tipo apply entrañan cierta complejidad. Es conveniente entender la lógica general de las mismas.
Realmente algunas de las estructuras de datos incluyen de manera más o menos explícita un resumen de la información, tal es el caso de las tablas de contingencias. Dichas tablas se pueden además obtener a partir de modelos.

  xtabs(Memoria~Grupos+Sexo,data=BrainTrain)
##            Sexo
## Grupos      Varon Mujer
##   BrainT       17    15
##   VideoJ       10    14
##   RepVideoJ     9    15
  BrainTrainT<-ftable(xtabs(Memoria~Grupos+Sexo,data=BrainTrain))
  BrainTrainT
##           Sexo Varon Mujer
## Grupos                    
## BrainT            17    15
## VideoJ            10    14
## RepVideoJ          9    15
  # En realidad es como:
  aggregate(Memoria ~ Grupos + Sexo, data = BrainTrain, FUN = sum)
##      Grupos  Sexo Memoria
## 1    BrainT Varon      17
## 2    VideoJ Varon      10
## 3 RepVideoJ Varon       9
## 4    BrainT Mujer      15
## 5    VideoJ Mujer      14
## 6 RepVideoJ Mujer      15
  # Podemos resumir aún más a través de la obtención de marginales
  rowSums(BrainTrainT)
## [1] 32 24 24
  colSums(BrainTrainT)
## [1] 36 44

Para familiarizarse con la familia Apply:


Para terminar este apartado repasamos, de manera comparativa, los tipos de datos

  # Mas sobre tipos de Datos
  typeof(Memoria)
## [1] "double"
  typeof(medias[1])
## [1] "double"
  typeof(anova(ModLin)$Df[1])
## [1] "integer"
  typeof(NivGrupos)
## [1] "character"
  typeof(Grupos)
## [1] "integer"
  typeof(BrainTrain$Sexo)
## [1] "integer"

Para familiarizarse con los Modelos Estadísticos:


5) Otro hito importante en la comprensión de los datos vendrá de la mano de la exploración de los datos a través de la realización de representaciones gráficas
Este es un mundo muy rico y complejo en el entorno de R. Por ahora vamos a pedir al programa que realice algunas representaciones destacadas de nuestros datos de Brain Training.

  # Los puntos de datos en la medida  
  plot(BrainTrain$Memoria)

  # Para los puntos de datos en función de la variable de agrupación
  with(BrainTrain, dotchart(Memoria,groups = Grupos))

  # Para obtener una representación a partir del resumen de los datos
  with(BrainTrain, plot(Grupos,Memoria))

  # Que en este caso es equivalente a un Gráfico del tipo Box Plot a partir del modelo
  boxplot(modelo)
  # Al cual podemos añadir los valores de la media aritmética
  points(medias,col="red",pch=18,cex=2)

En este punto sería interesante observar las diferencias entre las diferentes representaciones gráficas. Realmente la función plot es genérica, mientras que la función boxplot es más específica. Si nuestra investigación incluyese más bien la explicación de una medida a partir de una variable explicativa de carácter cuantitativo (como en el caso de Regresión Lineal), la función genérica habría invocado a un gráfico de dispersión.

  # Incorporamos ahora puntuaciones de Atención a nuestro entorno de trabajo
  Atencion <- c(10,7,6,7,3,4,6,7,9,2,9,8)
  Nuevomodelo<-as.formula(BrainTrain$Memoria ~ Atencion)
  # Y constatamos que la función plot invoca a un diagrama de dispersión
  plot(Nuevomodelo,xlab="Memoria", ylab = "Atención", main="Estudio de Brain Training")
  # Al cual podemos incorporar la Linea de Regresión Lineal
  abline(lm(Nuevomodelo),col="red")
  # Y la función de pérdida
  lines(predict(loess(Nuevomodelo)), col='blue')

La comparación de las dos funciones pone de manifiesto que el modelo Lineal supone una representación mejor de nuestros datos, en comparación a la función de pérdida. Conforme profundicemos en el curso podremos constatar que las funciones de pérdida a veces nos aportan pistas respectos a funciones curvilíneas (no lineales) más complejas, e incluso pueden convertirse en la opción más razonable.
Por otro lado, habrá tenido ocasión de familiarizarse con algunos de los parámetros más destacados para el manejo de las representaciones gráficas: colores, tipo de símbolo y su tamaño, leyendas de los ejes, entre otras.

Para familiarizarse con los Gráficos para Exploración de Datos:


6) Terminamos esta introducción con los ficheros de datos, la manera de almacenar la información

#Fichero de datos
  write.csv2(BrainTrain, file="ResEjem2.csv", row.names = FALSE)
  # Resultados del análisis
  capture.output(anova(ModLin), file="ResEjem1.txt",append=T)
  # Gráficos
  pdf("ResBrainT.pdf")
  boxplot(modelo)
  points(medias,col="red",pch=18,cex=2)
  dev.off()
## quartz_off_screen 
##                 2
  # Mejor, organizar resultados mediante listas y almacenar datos, 
  #  resultados y funciones específicas
  # Creamos una lista Vacía y en diferentes campos de la misma
  #  almacenamos los diferentes resultados
  ResAn<-list()
  ResAn$Medias<-medias
  ResAn$Resumen<-summary(ModLin)
  ResAn$ANOVA<-anova(ModLin)
  ResAn
## $Medias
##    BrainT    VideoJ RepVideoJ 
##         8         6         6 
## 
## $Resumen
## 
## Call:
## lm(formula = modelo, data = BrainTrain)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
##   -5.0   -1.0    0.5    1.0    2.0 
## 
## Coefficients:
##                 Estimate Std. Error t value Pr(>|t|)    
## (Intercept)        8.000      1.054   7.589 3.36e-05 ***
## GruposVideoJ      -2.000      1.491  -1.342    0.213    
## GruposRepVideoJ   -2.000      1.491  -1.342    0.213    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2.108 on 9 degrees of freedom
## Multiple R-squared:  0.2105, Adjusted R-squared:  0.03509 
## F-statistic:   1.2 on 2 and 9 DF,  p-value: 0.3452
## 
## 
## $ANOVA
## Analysis of Variance Table
## 
## Response: Memoria
##           Df Sum Sq Mean Sq F value Pr(>F)
## Grupos     2 10.667  5.3333     1.2 0.3452
## Residuals  9 40.000  4.4444
  capture.output(ResAn, file="ResEjem.txt",append=T)
  
  ResAn$ETM<-tapply(Memoria, Grupos, ETM)
  save(BrainTrain, ETM, ResAn, file = "BrainTrain.RData")

Una vez que tiene almacenados los objetos, todo lo que tendrá que hacer en el futuro es cargar el fichero. Para ello podría probar a borrar toda la información cargada en memoria de trabajo y cargar los objetos a partir del siguiente comando:

load("BrainTrain.RData")

Para familiarizarse con los Ficheros:


Si desea iniciar una sesión de trabajo a partir únicamente de los datos, lo recomendable sería:

  PathDesign="/Volumes/RMmRa21/Cursos/Doctorado 24/" # Sustituir el trayecto por el suyo propio
  NmFich="BrainTrain.csv";
  NmFich<-paste0(PathDesign,NmFich);
  BrainTrain <- read.csv2(NmFich, header=TRUE)
  # O bien desde un acceso a internet:
  BrainTrain <- read.csv2(
    "https://drive.google.com/uc?export=download&id=1hL1JDVyR8XomOuGsO6UxHUmWJP7dO4Yd",
    header=TRUE)

Con objeto de acceder a los ficheros almacenados en gdrive, primero tendrá que generar el trayecto adecuado, introduciendo el hipervínculo generado por gdrive en aplicaciones como Google Drive Direct Link Generator

Si desea profundizar en el manejo del entorno R Studio, los siguientes documentos le resultarán de gran ayuda:

Manuel Miguel Ramos Álvarez
Metodología de las Ciencias del Comportamiento
Dpto. Psicología, Universidad de Jaén, España
Grupo de investigación de Psicología Comparada

http://www4.ujaen.es/~mramos